package org.edu.modules.oa.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.edu.modules.oa.entity.VeOaDocumentEntity;
import org.edu.modules.oa.entity.VeOaHuishouzhanEntity;
import org.edu.modules.oa.vo.VeOaDocumentVo;

import java.util.HashMap;
import java.util.List;

public interface IVeOaHuishouzhanService extends IService<VeOaHuishouzhanEntity> {


    //逻辑删除（单/多）
    // 最后删自己
    Integer deleteTrueDocument(Long id);

    // 根据父级ID查询      查询条件--名称，文档编号，上传人，上传时间  (删除字段)
    // 进入下一级          where PARENT_ID = 选中的文件夹的ID  文件不可进入
    HashMap<String,Object> selectDocument(VeOaHuishouzhanEntity veOaHuishouzhanEntity, Integer startPage, Integer pageSize);

    // 返回上一级          where ID =  当前父级ID   where PARENT_ID= 搜出父级ID  （搜出）返回到父级ID为0时不可返回
    HashMap<String,Object> backToUpLevel(VeOaHuishouzhanEntity veOaHuishouzhanEntity,Integer startPage,Integer pageSize,Integer isDelete,String docType);


    //导出当前页记录   根据父级ID查询   查询条件--名称，文档编号，上传人，上传时间  (删除字段)
    List<VeOaDocumentVo> export(VeOaHuishouzhanEntity veOaHuishouzhanEntity, Integer startPage, Integer pageSize);

    //用传递来的id集合   恢复文件/文件夹的判断   where id = parentId,看搜出来的isdelete是否为0，为0没被删除，再看名称，为1就拿这搜出的parentid再找
    //判断上级文件夹有没被删除，有就一直找到没被删除的为止  0为最上级，
    //没被删，再判断是否与该级路径下的文件/文件夹 重名，重名提示用户存在同名文件或文件夹。无就恢复
    //找到可以恢复的id作为要恢复的上级id  自己，现在的路径
    Long findRecoverIdIsTheirParentId(Long itsid,Integer curPid);


    //恢复文件/文件夹及下级路径的文件/文件夹 --递归    parentId为恢复的位置，恢复到所属id的下级
    Integer recoverFileFolder(Long id,Integer parentId);

    //用id查上级id
    VeOaHuishouzhanEntity findParentId(VeOaHuishouzhanEntity veOaHuishouzhanEntity);

    //恢复到能恢复的上级的id --改parentId
    Integer recoverToItsId(Long id,Integer parentId);


}
